package com.comac.ins.isfd.service;

import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.bo.IsfdAcousticsModelBo;
import com.comac.ins.isfd.domain.bo.query.IsfdAcousticsModelQueryBo;
import com.comac.ins.isfd.domain.vo.IsfdAcousticsModelVo;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Collection;
import java.util.List;

/**
 * 声学模型Service接口
 */
public interface IIsfdAcousticsModelService {

    /**
     * 查询声学模型
     *
     * @param id 主键
     * @return 声学模型
     */
    IsfdAcousticsModelVo queryById(Long id);

    /**
     * 分页查询声学模型列表
     *
     * @return 声学模型分页列表
     */
    TableDataInfo<IsfdAcousticsModelVo> queryPageList(IsfdAcousticsModelQueryBo queryBo);

    /**
     * 查询符合条件的声学模型列表
     *
     * @param bo 查询条件
     * @return 声学模型列表
     */
    List<IsfdAcousticsModelVo> queryList(IsfdAcousticsModelBo bo);

    /**
     * 校验并批量删除声学模型信息
     *
     * @param ids 待删除的主键集合
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);


    /**
     * 文件上传OSS，保存文件信息
     */
    Boolean save(MultipartFile file, IsfdAcousticsModelBo bo);


    /**
     * 保存方法，如果存在可直接覆盖
     */
    Boolean saveOrUpdate(MultipartFile file, IsfdAcousticsModelBo bo, boolean overwrite);

    /**
     * 新增
     */
    Boolean insertByBo(IsfdAcousticsModelBo bo);

    /**
     * 编辑
     */
    Boolean edit(IsfdAcousticsModelBo bo);

    /**
     * 下载文件
     */
    void download(Long modelId, HttpServletResponse response) throws IOException;
}
